BigQuery workflowsがPreviewになったから試してみた
Google Cloud Next’24でも発表されたBigQuery workflowsがプレビューになりました。
You can now create workflows to execute code assets in sequence at a scheduled time. This feature is in Preview.
Google Cloud Next’24でBigQuery workflowsが発表された時の弊社ブログはこちらです。
本記事では、プレビューになったBigQuery workflowsについて機能概要や制限、実際に動作させてみた所感などをまとめてみました。
興味がある方は読んでみてください。
機能概要
BigQuery workflowsはその名の通りワークフロー形式で、SQLかNotebookを手動・またはスケジュール実行することができる機能となります。
ワークフローは、以下の要素で構成されます
- Notebook
- SQL
ワークフローは指定した時間と頻度で自動的に実行されるようにスケジュールできます。
スケジューラで設定可能な項目は以下となります。
項目 | 概要 |
---|---|
スケジュール名 | スケジュールの名称 |
サービスアカウント | ワークフローを実行するサービスアカウント |
Cloud Storageバケット | Notebook実行結果保存先バケット※Notebookを設定している場合のみ |
スケジュールの頻度 | 毎日、毎週、毎月、カスタム(cron式)から選択可 |
タイムゾーン | タイムゾーン |
Notebookを実行するランタイムはStandard E2 Runtime(4 vCPU, 16GB RAM)
で固定のようです。
また、ワークフローはDataformによって実行されるようです。
Workflows are powered by Dataform.(ワークフローはDataformによって提供される)
引用:https://cloud.google.com/bigquery/docs/workflows-introduction
制限
以下の制限があるようです。
- 既存のノートブックやSQLクエリをワークフローに追加することはできません。ワークフロータスクを追加するには、ワークフロー内で新しいノートブックまたはSQLクエリを作成する必要があります。
- 特定のワークフローへのアクセス権を他のユーザーに付与することはできません。
- ワークフローはGoogle Cloudコンソールでのみ利用可能です。
- ワークフローを作成した後に、そのワークフローを保存するリージョンを変更することはできません。詳細については、「コード資産のデフォルトリージョンを設定する」を参照してください。
コンソールでのみ利用可能、他のユーザからアクセスできないという点は少し残念に感じてしまいます。
クォータに関してはDataformのものが適用されます。
料金
SQLだけであればBigQueryのコンピューティング・ストレージ料金。Notebookを含む場合はNotebookを実行するインスタンス費用(Standard E2
)が発生するようです。あとはCloud Loggingの料金。
以下はリファレンスの引用となります。
ワークフロータスクの実行には、BigQueryの計算料金とストレージ料金が発生します。
また、Notebookを含むワークフローでは、デフォルトのマシンタイプに基づくColab Enterpriseのランタイム料金が発生します。
価格の詳細については、Colab Enterpriseの価格を参照してください。各BigQueryワークフローの実行は、Cloud Loggingを使用してログに記録されます。ロギングはBigQueryワークフローの実行に対して自動的に有効化され、Cloud Loggingの課金料金が発生する場合があります。 詳細については、Cloud Loggingの価格を参照してください。
ためしてみた
SQLとNotebookを実行するワークフローを作成してみました。
BigQueryのエクスプローラを開くと、ワークフローのアイコンが追加されています。
ワークフロー
を押下すると、以下の画面になるので開始
を押下します。
タスクを追加
を押下するとクエリまたはノートブックのどちらかを選択することができます。
クエリ
を押下します。押下すると画面上にQuery task(xxxx)
というアイコンが表示されます。
画面右側EDIT QUERY
を押下するとクエリを設定することができます。
テスト用なので1
を表示するだけの簡素なSQLを実装しました。
クエリを保存
を押下して閉じます。
ワークフローを実行するためにはサービスアカウントなどの設定が必要です。
画面上部の設定
を押下して設定画面へ移動します。
サービスアカウントや処理を実行するリージョンを選択します。
(Notebookを設定していないのでNotebook options
は設定不要です)
BigQuery workflowsを実行するサービスアカウントはDataformの権限が必要となります。
Dataformの実行権限に関しては以下のリファレンスをご確認ください。
画面上部の実行
を押下するとワークフローが実行されます。
実行
押下後、実行数
を押下すると実行したワークフローの履歴を見ることができます。
実行履歴を開いていくと詳細を表示
から実行した結果を見ることができます。
実行結果
続いて今度はNotebookも追加してみます。
タスクを追加
からノートブック
を選択します。
2つ目のタスクを追加したのでどちらかのタスクをクリックすると次の後に実行
を押下すると
もう片方のタスクが表示されるようになっています。
もう片方のタスクを設定してみます。
依存関係が設定されました。
先ほど設定
でサービスアカウントなどを設定しましたが、Notebook追加後に設定
にビックリマークがつくようになったかと思います。
これはNotebookを追加したためNotebook options
を設定する必要が出てきたためです。
設定を開いて適当なCloud Storageバケットを設定する必要があります。
設定したCloud Storageバケットには、ワークフローを実行後にNotebookのコードと結果が格納されます。
SQLのタスクの時と同様にタスクを選択してEDIT
を押下するとNotebookを作成することができます。
コードを追加したり、テキストを追加したりできます。
ランタイムに接続するとColab Enterpriseランタイムが立ち上がり費用が発生するので注意が必要です。
Standard E2
の費用が発生します。詳しくは料金表をご参照ください。
デフォルト設定では17時間後まで立ち上がったままなので検証のみで不要な方はColab Enterpriseのコンソールから削除しましょう。
Notebookを含んだワークフローの実行方法は先ほどのSQLと同様なので割愛します。
まとめ
使用してみた感覚としては、スケジュールドクエリとDataformの中間の機能のように感じました。
スケジュールドクエリでは難しいけどDataformを使うほどではない、という時に役立ちそうだなと。
ただ、現状では作成したワークフローに対して他のユーザからアクセスできないという点は少し残念だなと思いました。個人単位でしか管理できないのではチーム開発ではなかなか運用に取り入れるのは難しいなと。これはGAになるまでに変わると良いなと思います。
ワークフローを組むGUIはさくさく動いてとっても気持ちいいものでしたしGAになるのがとても楽しみです。
Nextで発表があったときはdata canvas、data preparationなどのタスクをワークフローに組み込めたり、DataformやCloud Composerにエクスポートすることもできる様子だったのでこれから機能追加があるのかもしれません。
それではまた。ナマステー
参考